package com.jt.www.model.pol;

import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * 教育渠道批单详情查询返回值
 *
 * @author
 */

public class EduQueryEndorsementDetailVo {


    /**
     * 批单附件信息
     */
    @ApiModelProperty("批单附件信息")
    List<EndorsementsFileInfoVO> eduEndorsementFileVos;
    /**
     * 批单附件信息
     */
    @ApiModelProperty("被保人附件信息")
    List<EndorsementsFileInfoVO> inuredsEndorsementFileVos;
    /**
     * 批改前投保人信息
     */
    @ApiModelProperty("批改前投保人信息")
    private ContextCorporation modifyBeforeHolder;
    /**
     * 批改后投保人信息
     */
    @ApiModelProperty("批改后投保人信息")
    private ContextCorporation modifyAfterHolder;
    /**
     * 批改前被保人信息
     */
    @ApiModelProperty("批改前被保人信息")
    private EduInsuredVo modifyBeforeInsured;
    /**
     * 批改后被保人信息
     */
    @ApiModelProperty("批改后被保人信息")
    private EduInsuredVo modifyAfterInsured;


    // 批单信息
    /**
     * 批单申请号
     */
    @ApiModelProperty("批单申请号")
    private String applyNo;

    /**
     * 渠道号
     */
    @ApiModelProperty("渠道号")
    private String channelCode;

    /**
     * 渠道名称
     */
    @ApiModelProperty("渠道名称")
    private String channelName;

    /**
     * 投保单号
     */
    @ApiModelProperty("投保单号")
    private String applicationFormCode;

    /**
     * 批改类型,01-般性批改,02-批减,03-批加,04-批退,05-协议批加,以此类推
     */
    @ApiModelProperty("批改类型")
    private String endorsementsType;

    /**
     * 批改方式：01-在线批单,02-事后补录
     */
    @ApiModelProperty("批改方式")
    private String endorsementsMode;

    /**
     * 批单号,保险公司批单号
     */
    @ApiModelProperty("批单号")
    private String endorsementsNo;

    /**
     * 原保单号
     */
    @ApiModelProperty("原保单号")
    private String insuranceNo;

    /**
     * 产品类型
     */
    @ApiModelProperty("产品类型")
    private String productType;


    /**
     * 产品编码
     */
    @ApiModelProperty("产品编码")
    private String productCode;

    /**
     * 产品名称
     */
    @ApiModelProperty("产品名称")
    private String productName;

    /**
     * 保单保费
     */
    @ApiModelProperty("保单保费")
    private BigDecimal policyAmount;

    /**
     * 批单保费金额
     */
    @ApiModelProperty("批单保费金额")
    private BigDecimal batchPremium;

    /**
     * 批单优惠前金额
     */
    @ApiModelProperty("批单优惠前金额")
    private BigDecimal totalAmount;

    /**
     * 应收批单金额
     */
    @ApiModelProperty("应收批单金额")
    private BigDecimal receivablePremium;

    /**
     * 实收批单金额
     */
    @ApiModelProperty("实收批单金额")
    private BigDecimal payPremium;

    /**
     * 主险总保费
     */
    @ApiModelProperty("主险总保费")
    private BigDecimal mainInsurancePremium;

    /**
     * 附加险总保费
     */
    @ApiModelProperty("附加险总保费")
    private BigDecimal additionalInsurancePremium;

    /**
     * 主险变动金额
     */
    @ApiModelProperty("主险变动金额")
    private BigDecimal baseAmount;

    /**
     * 附加险变动金额
     */
    @ApiModelProperty("附加险变动金额")
    private BigDecimal addAmount;

    /**
     * 保费变动前金额
     */
    @ApiModelProperty("保费变动前金额")
    private BigDecimal premiumAmountBefore;

    /**
     * 保费变动后金额
     */
    @ApiModelProperty("保费变动后金额")
    private BigDecimal premiumAmountAfter;

    /**
     * 当前批改次数
     */
    @ApiModelProperty("当前批改次数")
    private Long endorsementsCount;

    /**
     * 批单生效日期
     */
    @ApiModelProperty("批单生效日期")
    private Date validDate;

    /**
     * 批单申请日期
     */
    @ApiModelProperty("批单申请日期")
    private Date applyDate;

    /**
     * 批单保险起期
     */
    @ApiModelProperty("批单保险起期")
    private Date startDate;

    /**
     * 批单保险止期
     */
    @ApiModelProperty("批单保险止期")
    private Date endDate;

    /**
     * 最后一次付款日期
     */
    @ApiModelProperty("最后一次付款日期")
    private Date payDate;

    /**
     * 保费确认到账日期
     */
    @ApiModelProperty("保费确认到账日期")
    private Date premiumConfirmedDate;

    /**
     * 批单签单时间
     */
    @ApiModelProperty("批单签单时间")
    private Date issueDate;

    /**
     * 批单状态：0 - 已保存、1 - 已提交、2 - 已复核、3 - 复核不通过、4 - 已关联、5 - 待出单、6 - 已出单
     */
    @ApiModelProperty("批单状态")
    private String status;


    /**
     * 财务状态：01-未到账、02-部分到账、03-已到账
     */
    @ApiModelProperty("财务状态")
    private String balanceStatus;

    /**
     * 支付状态
     */
    @ApiModelProperty("支付状态")
    private String payStatus;

    /**
     * 退费状态:1 - 无需退费2 - 未退费3 - 已退费
     */
    @ApiModelProperty("退费状态")
    private String refundStatus;

    /**
     * 有效（00）终止（01）失效（02）
     */
    @ApiModelProperty("有效标志")
    private String validStatus;

    /**
     * 批改原因
     */
    @ApiModelProperty("批改原因")
    private String reason;

    /**
     * 批单申请人
     */
    @ApiModelProperty("批单申请人")
    private String applicant;

    /**
     * 批单申请人
     */
    @ApiModelProperty("批单申请人")
    private String applicantCode;

    /**
     * 订单ID
     */
    @ApiModelProperty("订单ID")
    private Long orderId;

    /**
     * 批单确认人
     */
    @ApiModelProperty("批单确认人")
    private String confirmor;

    /**
     * 批单确认时间
     */
    @ApiModelProperty("批单确认时间")
    private Date confirmTime;


    /**
     * 省
     */
    @ApiModelProperty("省编码")
    private String provinceCode;

    /**
     * 市
     */
    @ApiModelProperty("市编码")
    private String cityCode;

    /**
     * 县
     */
    @ApiModelProperty("县编码")
    private String countyCode;

    /**
     * 机构编码
     */
    @ApiModelProperty("机构编码")
    private String branchCode;

    /**
     * 机构名称
     */
    @ApiModelProperty("机构名称")
    private String branchName;

    /**
     * 本次批单优惠的金额
     */
    @ApiModelProperty("批单优惠金额")
    private BigDecimal preferentialPrem;
    /**
     * 支付方式  01-在线支付， 02-转账支付
     */
    @ApiModelProperty("支付方式")
    private String payChannel;

    /**
     * 支付渠道  allin - 通联  ali - 支付宝  weixin-微信 vbao-微保  adan-预缴存
     */
    @ApiModelProperty("支付渠道")
    private String payMethod;

    @ApiModelProperty("险种信息")
    private List<BusRiskVO> risks;

    @ApiModelProperty("险种对应的批改人数")
    private List<RiskEndorseNum> riskEndorseNums;

    @ApiModelProperty("退费信息")
    private ReturnPremiumVO returnPremiumVO;

    @ApiModelProperty("投保人批改差异值")
    private List<DiffData> holderDiffData;

    private List<DiffData> insuredDiffData;

    private Set<Integer> noSet;


    public static class DiffData {
        @ApiModelProperty("批改前值")
        private String oldValue;

        @ApiModelProperty("批改后值")
        private String newValue;

        @ApiModelProperty("属性名")
        private String propertyName;

        @ApiModelProperty("属性名")
        private String property;

        public String getOldValue() {
            return this.oldValue;

        }

        public void setOldValue(String oldValue) {
            this.oldValue = oldValue;
        }

        public String getNewValue() {
            return this.newValue;

        }

        public void setNewValue(String newValue) {
            this.newValue = newValue;
        }

        public String getPropertyName() {
            return this.propertyName;

        }

        public void setPropertyName(String propertyName) {
            this.propertyName = propertyName;
        }

        public String getProperty() {
            return this.property;

        }

        public void setProperty(String property) {
            this.property = property;
        }
    }


    /**
     * 险种对应的批改人数
     */

    public static class RiskEndorseNum {
        @ApiModelProperty("险种编码")
        private String riskCode;

        @ApiModelProperty("险种名称")
        private String riskName;

        @ApiModelProperty("批改人数")
        private int correctNum;

        @ApiModelProperty("产生费用人数")
        private int costNum;

        public String getRiskCode() {
            return this.riskCode;

        }

        public void setRiskCode(String riskCode) {
            this.riskCode = riskCode;
        }

        public String getRiskName() {
            return this.riskName;

        }

        public void setRiskName(String riskName) {
            this.riskName = riskName;
        }

        public int getCorrectNum() {
            return this.correctNum;

        }

        public void setCorrectNum(int correctNum) {
            this.correctNum = correctNum;
        }

        public int getCostNum() {
            return this.costNum;

        }

        public void setCostNum(int costNum) {
            this.costNum = costNum;
        }
    }

    /**
     * 被保人信息
     */

    public static class EduInsuredVo {
        /**
         * 企业编码
         */
        @ApiModelProperty("企业编码")
        private String corporationCode = "";

        /**
         * 企业地址
         */
        @ApiModelProperty("企业地址")
        private String address = "";

        /**
         * 联系人
         */
        @ApiModelProperty("联系人")
        private String linkPerson = "";

        /**
         * 联系人手机号
         */
        @ApiModelProperty("联系人手机号")
        private String linkPhone = "";

        /**
         * 联系人电话
         */
        @ApiModelProperty("联系人电话")
        private String linkTel = "";

        /**
         * 联系人邮箱
         */
        @ApiModelProperty("联系人邮箱")
        private String linkEmail = "";

        /**
         * 法人
         */
        @ApiModelProperty("法人")
        private String legalPerson = "";

        /**
         * 营业执照编号
         */
        @ApiModelProperty("营业执照编号")
        private String businessLicenseNo = "";

        /**
         * 组织机构编码
         */
        @ApiModelProperty("组织机构编码")
        private String organizationCode = "";

        /**
         * 营业范围
         */
        @ApiModelProperty("营业范围")
        private String businessScope = "";

        /**
         * 邮编
         */
        @ApiModelProperty("邮编")
        private String zipCode = "";

        /**
         * 许可证号
         */
        @ApiModelProperty("许可证号")
        private String licenseNo = "";

        /**
         * 传真
         */
        @ApiModelProperty("传真")
        private String fax = "";

        /**
         * 详细地址
         */
        @ApiModelProperty("详细地址")
        private String location = "";

        /**
         * 省编码
         */
        @ApiModelProperty("省编码")
        private String provinceCode = "";

        /**
         * 城市编码
         */
        @ApiModelProperty("城市编码")
        private String cityCode = "";

        /**
         * 区县编码
         */
        @ApiModelProperty("区县编码")
        private String countyCode = "";

        /**
         * 企业名称
         */
        @ApiModelProperty("企业名称")
        private String name = "";

        /**
         * 经营性质
         */
        @ApiModelProperty("经营性质")
        private String managerType = "";

        /**
         * 企业类型
         */
        @ApiModelProperty("企业类型")
        private String corporationType = "";

        /**
         * 三证合一码
         */
        @ApiModelProperty("三合一码")
        private String threeInOneCode = "";

        /**
         * 扩展属性
         */
        @ApiModelProperty("扩展字段")
        private List<ContextExtend> extendList = new ArrayList<ContextExtend>();

        /**
         * 行业类型
         */
        @ApiModelProperty("行业类型")
        private String industryKind = "";

        /**
         * 被保人标的信息
         */
        @ApiModelProperty("被保人标的")
        private List<ContextInsuranceObject> insuranceObjects = new ArrayList<ContextInsuranceObject>();

        public String getCorporationCode() {
            return corporationCode;
        }

        public void setCorporationCode(String corporationCode) {
            this.corporationCode = corporationCode;
        }

        public String getAddress() {
            return address;
        }

        public void setAddress(String address) {
            this.address = address;
        }

        public String getLinkPerson() {
            return linkPerson;
        }

        public void setLinkPerson(String linkPerson) {
            this.linkPerson = linkPerson;
        }

        public String getLinkPhone() {
            return linkPhone;
        }

        public void setLinkPhone(String linkPhone) {
            this.linkPhone = linkPhone;
        }

        public String getLinkTel() {
            return linkTel;
        }

        public void setLinkTel(String linkTel) {
            this.linkTel = linkTel;
        }

        public String getLinkEmail() {
            return linkEmail;
        }

        public void setLinkEmail(String linkEmail) {
            this.linkEmail = linkEmail;
        }

        public String getLegalPerson() {
            return legalPerson;
        }

        public void setLegalPerson(String legalPerson) {
            this.legalPerson = legalPerson;
        }

        public String getBusinessLicenseNo() {
            return businessLicenseNo;
        }

        public void setBusinessLicenseNo(String businessLicenseNo) {
            this.businessLicenseNo = businessLicenseNo;
        }

        public String getOrganizationCode() {
            return organizationCode;
        }

        public void setOrganizationCode(String organizationCode) {
            this.organizationCode = organizationCode;
        }

        public String getBusinessScope() {
            return businessScope;
        }

        public void setBusinessScope(String businessScope) {
            this.businessScope = businessScope;
        }

        public String getZipCode() {
            return zipCode;
        }

        public void setZipCode(String zipCode) {
            this.zipCode = zipCode;
        }

        public String getLicenseNo() {
            return licenseNo;
        }

        public void setLicenseNo(String licenseNo) {
            this.licenseNo = licenseNo;
        }

        public String getFax() {
            return fax;
        }

        public void setFax(String fax) {
            this.fax = fax;
        }

        public String getLocation() {
            return location;
        }

        public void setLocation(String location) {
            this.location = location;
        }

        public String getProvinceCode() {
            return provinceCode;
        }

        public void setProvinceCode(String provinceCode) {
            this.provinceCode = provinceCode;
        }

        public String getCityCode() {
            return cityCode;
        }

        public void setCityCode(String cityCode) {
            this.cityCode = cityCode;
        }

        public String getCountyCode() {
            return countyCode;
        }

        public void setCountyCode(String countyCode) {
            this.countyCode = countyCode;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getManagerType() {
            return managerType;
        }

        public void setManagerType(String managerType) {
            this.managerType = managerType;
        }

        public String getCorporationType() {
            return corporationType;
        }

        public void setCorporationType(String corporationType) {
            this.corporationType = corporationType;
        }

        public String getThreeInOneCode() {
            return threeInOneCode;
        }

        public void setThreeInOneCode(String threeInOneCode) {
            this.threeInOneCode = threeInOneCode;
        }

        public List<ContextExtend> getExtendList() {
            return extendList;
        }

        public void setExtendList(List<ContextExtend> extendList) {
            this.extendList = extendList;
        }

        public String getIndustryKind() {
            return industryKind;
        }

        public void setIndustryKind(String industryKind) {
            this.industryKind = industryKind;
        }

        public List<ContextInsuranceObject> getInsuranceObjects() {
            return insuranceObjects;
        }

        public void setInsuranceObjects(List<ContextInsuranceObject> insuranceObjects) {
            this.insuranceObjects = insuranceObjects;
        }
    }
}
